package com.ts.conch.admin.controller;

import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.stp.StpInterface;
import cn.dev33.satoken.stp.StpUtil;
import com.alibaba.fastjson.JSON;
import com.ts.conch.auth.base.BaseController;
import io.swagger.annotations.Api;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @ClassName: TsCommonController
 * @Decription: [公共管理] - 控制层
 * @Author: IDai
 * @Date: 2021-09-16 10:00 星期四
 **/
@RequestMapping(value = "/common")
@RestController
@Api(tags = "[公共管理] - 控制层")
public class TsCommonController extends BaseController {

    @Autowired
    private StpInterface stpInterface;

    /** 日志打印工具 **/
    private static final Logger logger = LoggerFactory.getLogger(TsAdminController.class);

    // 测试登录，浏览器访问： http://localhost:8081/admin/doLogin?username=zhang&password=123456
    @RequestMapping("doLogin")
    public String doLogin(String username, String password) {
        // 此处仅作模拟示例，真实项目需要从数据库中查询数据进行比对
        if("zhang".equals(username) && "123456".equals(password)) {
            StpUtil.login(10001,"PC");
            List<String> permissionList = stpInterface.getPermissionList(10001, null);
            List<String> roleList = stpInterface.getRoleList(10001, null);
            logger.info("[权限装配] - 程序[SaAuthComponent.getRoleList] - 结束运行 - 获取用户角色名列表roleList:{}", JSON.toJSON(roleList));
            logger.info("[权限装配] - 程序[SaAuthComponent.getPermissionList] - 结束运行 - 用户权限码列表permissionList:{}", JSON.toJSON(permissionList));
            return "登录成功";
        }
        return "登录失败";
    }

    @RequestMapping("doLogin1")
    public String doLogin1(String username, String password) {
        // 此处仅作模拟示例，真实项目需要从数据库中查询数据进行比对
        if("zhang".equals(username) && "123456".equals(password)) {
            StpUtil.login(10001,"APP");
            List<String> permissionList = stpInterface.getPermissionList(10001, null);
            List<String> roleList = stpInterface.getRoleList(10001, null);
            logger.info("[权限装配] - 程序[SaAuthComponent.getRoleList] - 结束运行 - 获取用户角色名列表roleList:{}", JSON.toJSON(roleList));
            logger.info("[权限装配] - 程序[SaAuthComponent.getPermissionList] - 结束运行 - 用户权限码列表permissionList:{}", JSON.toJSON(permissionList));
            return "登录成功";
        }
        return "登录失败";
    }

    // 查询登录状态，浏览器访问： http://localhost:8081/admin/isLogin
    @RequestMapping("isLogin")
    @SaCheckPermission("admin-isLogin")
    public String isLogin(String username, String password) {
        return "当前会话是否登录：" + StpUtil.isLogin();
    }

    // 查询登录状态，浏览器访问： http://localhost:8081/user/logout
    @RequestMapping(value = "/logout")
    @SaCheckPermission("admin-logout")
    public String logout() {
        StpUtil.logout();
        return "退出成功！";
    }


}

